#ifndef TETRIXPIECE_H
#define TETRIXPIECE_H


enum TetrixShape{
    NoShape,
    ZShape,
    SShape,
    LineShape,
    TShape,
    SquareShape,
    LShape,
    MirroredLShape
};

class TetrixPiece
{
public:
    TetrixPiece(){setShape(NoShape);}
public:
    void setRandomShape();
    void setShape(TetrixShape shape);

    TetrixShape shape()const{return this->piece_shape;}
    int x(int index)const{return this->coords[index][0];}
    int y(int index)const{return this->coords[index][1];}
    int minX()const;
    int maxX()const;
    int minY()const;
    int maxY()const;

    TetrixPiece rotatedLeft()const;
    TetrixPiece rotatedRight()const;

private:
    void setX(int index,int x){this->coords[index][0]=x;}
    void setY(int index ,int y){this->coords[index][1]=y;}

private:
    int coords[4][2];
    TetrixShape piece_shape;


};

#endif // TETRIXPIECE_H
